// 定义一个trait，表示“会战斗的能力”
trait Fight {
    fn fight(&self);
}
trait Fly {
    fn fly(&self);
}
// 为所有实现了Fly trait的角色提供默认的Fight实现
impl<T: Fly> Fight for T {
    fn fight(&self) {
        println!("使用飞行能力进行战斗！");
    }
}

// 孙悟空和猪八戒都实现了Fly trait，因此他们自动具有Fight能力
struct MonkeyKing {}
impl Fly for MonkeyKing {
    fn fly(&self) {
        println!("使用飞行能力进行战斗！");}
}

struct ZhuBajie {}
impl Fly for ZhuBajie {
    fn fly(&self) {
        println!("使用飞行能力进行战斗！");}
}

// 测试代码
fn main() {
    let monkey_king = MonkeyKing {};
    monkey_king.fight(); // 输出：使用飞行能力进行战斗！

    let zhu_bajie = ZhuBajie {};
    zhu_bajie.fight(); // 输出：使用飞行能力进行战斗！
}